/**
 * @file CommunicationFactory.h
 * @brief 通信工厂类
 * @author Your Name
 * @date 2025-03-30
 */

#ifndef COMMUNICATIONFACTORY_H
#define COMMUNICATIONFACTORY_H

#include <QString>
#include <QVariantMap>
#include "icommunicationstrategy.h"
#include "iprotocol.h"

/**
 * @brief 通信工厂类
 * @details 用于创建通信策略和协议对象
 */
class CommunicationFactory {
public:
    /**
     * @brief 通信策略类型枚举
     */
    enum StrategyType {
        SERIAL,     ///< 串口通信
        TCP,        ///< TCP客户端
        UDP,        ///< UDP通信
        BLUETOOTH   ///< 蓝牙通信
    };

    /**
     * @brief 协议类型枚举
     */
    enum ProtocolType {
        COMPACT,    ///< 紧凑型二进制协议
        JSON,       ///< JSON协议
        MODBUS      ///< Modbus协议
    };

    /**
     * @brief 创建通信策略对象
     * @param type 策略类型
     * @return 策略对象指针
     */
    static ICommunicationStrategy* createStrategy(StrategyType type);

    /**
     * @brief 创建协议对象
     * @param type 协议类型
     * @return 协议对象指针
     */
    static IProtocol* createProtocol(ProtocolType type);
};

#endif // COMMUNICATIONFACTORY_H
